package com.gxa.sideParking.admin.generator;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

public class MPGenerator {
    public static void main(String[] args) {
        // 把连接url改成适配自己数据库的方式
        String url = "jdbc:mysql://47.108.137.37/sideParking?useSSL=false&characterEncoding=UTF8&serverTimezone=UTC";
        String username = "root";
        String password = "!12345678Myq";
        FastAutoGenerator.create(url, username, password)
                // 基础全局配置
                .globalConfig(builder -> {
                    builder.author("gxa") // 设置作者,出现在文档注释中
                            .enableSwagger() // 开启 swagger 模式,给实体类pojo/controller添加swagger的注解
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D://generator"); // 指定输出目录
                })
                // 包的配置
                .packageConfig(builder -> {
                    builder.parent("com.gxa") // 设置父包名
                            .moduleName("sideParking") // 设置父包模块名
                            .entity("pojo")
                            // mapper文件创建的目录
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://generator"));
                })
                // 策略配置
                .strategyConfig(builder -> {
                    // 指定哪些数据表要进行逆向工程的创建(pojo/mapper/service/controller)
                    // 选择表的时候应该选择单表(对应实体)
                    builder.addInclude("tb_admin") // 设置需要生成的表名
                            .addInclude("tb_department")
                            .addInclude("tb_feedback")
                            .addInclude("tb_geomagnetism")
                            .addInclude("tb_inspector")
                            .addInclude("tb_kaoqin")
                            .addInclude("tb_maintainer")
                            .addInclude("tb_order")
                            .addInclude("tb_road")
                            .addInclude("tb_role")
                            .addInclude("tb_statistics")
                            .addInclude("tb_car")
                            .addInclude("tb_manager")
                            .addInclude("tb_order_record")
                            .addInclude("tb_user")
                            .addTablePrefix("tb_","sys_")
                            .entityBuilder().enableLombok()
                            .serviceBuilder().formatServiceFileName("%sService") // 设置接口名不带I前缀
                    ; // 设置过滤表前缀
                })
        // .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
